package com.runa.monitor.platinterface.extend.nb.vo;

/**
 * @author fuhui
 * @data 2021/10/7
 *
 * 互联网温湿度仪项目终端与电信云服务器通信协议(草案)
 * 一．概述.
 * 本协议是描述互联网温湿度仪与电信云服务器通信时数据传输格式，数据类型，数据功能等数据。默认终端是指互联网温湿度仪。默认电信云平台是指中国电信物联网开放平台(旧平台）。默认用户服务器是指客户与电信云平台交互的私有服务器。通信采用的通信协议为LWM2M，如下：
 *
 * 协议类型：LWM2M
 * 数据格式：二进制流码
 * 平台：中国电信物联网开放平台
 * 所属行业：智慧城市
 * 测试平台：https://develop.ct10649.com
 *
 * 二．功能描述。
 * 终端采用NB-iot模组与电信云平台通信。通信分为上传数据和下发参数设置，离线数据重新上传两种。
 * 1.数据上传：通信正常的情况下，在终端采集到一定的数据量后(譬如15分钟采集一次数据），在特定的时间间隔(比如4小时）时，上传设备参数与温湿度数据。
 * 2.下发参数设置：在数据上传成功后，电信云平台接收到终端的数据后，立即下发参数设置命令（包括参数，时间更新等）。终端在数据上传成功后，会等待一定时间（比如1s),接收服务器下发的参数。此命令需要用户服务器控制。
 *
 * 三．profile描述
 * 1.数据上传。
 * Struct humiture_data{
 * Char messageId;//ID号，电信云平台系统参数，值为0x00
 * char device_code[15];//设备编码，15个字节
 * Unsigned char signal_level;//信号强度，1个字节
 * Unsigned char battery_level;//电池电量，1个字节
 * char soft_version[6];//软件版本号，6个字节
 * Unsigned int start_time;//开机时间，4个字节的时间
 * unsigned char errcode;//故障代码，一个字节
 * unsigned short up_data_interval;//上传数据时间间隔(单位min),2个字节
 * unsigned short save_data_interval;//保存数据时间间隔(单位min)，2个字节
 * Short  temp_offset;//温度补偿，2个字节
 * Short  humidity_offset;//湿度补偿，2个字节
 * Unsigned Int up_time;//上传数据时的时间，4个字节
 * Unsigned short user_code;//租户编码
 * Unsigned short templen;//temp字符串长度
 * char *temp;//温度，可变的字符串
 * Unsigned short humlen;//humidity字符串长度
 * char *humidity;//湿度，可变字符串
 * }
 *
 * 温度和湿度是整数，除以10，得出来的是实际的温度和湿度。需要特别注意的是，temp是一个可变的字符串，会根据templen的值改变而改变，比如templen = 10,表示有10个字符串，每个温度之间用“，”隔开。湿度也是如此。如下图所示：
 *
 *
 * 2.下发参数设置。
 *
 *         "up_time":1633772602000,
 *         "up_data_interval":240,
 *         "temp_offset":0,
 *         "temp":"240,240,241,241,241,241,241,241,242,242,242,242,242,243,243,243",
 *         "start_time":1633772612000,
 *         "soft_version":"V2.0.0",
 *         "signal_level":5,
 *         "save_data_interval":15,
 *         "lessee_code":0,
 *         "humidity_offset":0,
 *         "humidity":"732,734,737,738,741,743,742,746,747,745,748,749,749,753,757,756",
 *         "errcode":0,
 *         "device_code":"RN0120100163L",
 *         "battery_level":100
 *
 * 3.注意
 * 1.temp和humidity显示的为字符串，与’,’隔开，且字符串代表的为整数。实际的数字为显示数值除以10.
 * 2.Up_data_interval和save_data_interval分别为上传数据时间间隔和保存数据时间间隔。单位为分钟。也就是如果上传数据时间间隔为4小时，则设置数据为240；如果保存数据时间间隔为15分钟，则数值为15.
 * 3.Temp_offset和humidity_offset为温度和湿度的补偿值。在电信云上显示的温度和湿度都是在终端设备补偿过了的。Temp_offset和humidity_offset为2个字节的整数，且为实际数据的10倍。比如：temp_offset=1，表示显示温度=10*实际采集温度 + 1；如果temp_offset=-1,表示显示温度=10*实际温度 - 1；humidity_offset也做同样处理。
 * 4.messageId是电信云平台参数,数据上传消息中的messageId默认值是0x0.下发参数设置消息中的messageId默认值是0x01.
 */
public class NewMqttRuiPanelVo {

    private Long up_time;

    private Integer up_data_interval;

    private Integer temp_offset;

    private String temp;

    private Long start_time;

    private String soft_version;

    private Integer signal_level;

    private Integer save_data_interval;

    private Integer lessee_code;

    private Integer humidity_offset;

    private String humidity;

    private Integer errcode;

    private String device_code;

    private Integer user_code;

    private Integer battery_level;

    public Long getUp_time() {
        return up_time;
    }

    public void setUp_time(Long up_time) {
        this.up_time = up_time;
    }

    public Integer getUp_data_interval() {
        return up_data_interval;
    }

    public void setUp_data_interval(Integer up_data_interval) {
        this.up_data_interval = up_data_interval;
    }

    public Integer getTemp_offset() {
        return temp_offset;
    }

    public void setTemp_offset(Integer temp_offset) {
        this.temp_offset = temp_offset;
    }

    public String getTemp() {
        return temp;
    }

    public void setTemp(String temp) {
        this.temp = temp;
    }

    public Long getStart_time() {
        return start_time;
    }

    public void setStart_time(Long start_time) {
        this.start_time = start_time;
    }

    public String getSoft_version() {
        return soft_version;
    }

    public void setSoft_version(String soft_version) {
        this.soft_version = soft_version;
    }

    public Integer getSignal_level() {
        return signal_level;
    }

    public void setSignal_level(Integer signal_level) {
        this.signal_level = signal_level;
    }

    public Integer getSave_data_interval() {
        return save_data_interval;
    }

    public void setSave_data_interval(Integer save_data_interval) {
        this.save_data_interval = save_data_interval;
    }

    public Integer getLessee_code() {
        return lessee_code;
    }

    public void setLessee_code(Integer lessee_code) {
        this.lessee_code = lessee_code;
    }

    public Integer getHumidity_offset() {
        return humidity_offset;
    }

    public void setHumidity_offset(Integer humidity_offset) {
        this.humidity_offset = humidity_offset;
    }

    public String getHumidity() {
        return humidity;
    }

    public void setHumidity(String humidity) {
        this.humidity = humidity;
    }

    public Integer getErrcode() {
        return errcode;
    }

    public void setErrcode(Integer errcode) {
        this.errcode = errcode;
    }

    public String getDevice_code() {
        return device_code;
    }

    public void setDevice_code(String device_code) {
        this.device_code = device_code;
    }

    public Integer getUser_code() {
        return user_code;
    }

    public void setUser_code(Integer user_code) {
        this.user_code = user_code;
    }

    public Integer getBattery_level() {
        return battery_level;
    }

    public void setBattery_level(Integer battery_level) {
        this.battery_level = battery_level;
    }

}
